Video processing architecture definition by function graph methodology

ABSTRACT

A design technique is disclosed that allows video processing hardware designers to effectively employ the requirements of a video processing standard (e.g., H.264 specification or other such standard) during the hardware architecture design phase of the design process. The technique eliminates or otherwise reduces costly multiple passes through the resource intensive implementation and verification portions of the design process, and allows designers to make changes to the hardware architecture design, thereby ensuring verification at the implementation phase.

RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No.60/635,114, filed on Dec. 10, 2004, which is herein incorporated in itsentirety by reference.

FIELD OF THE INVENTION

The invention relates to video processing architecture design, and moreparticularly, to generating a video processing architecture definitionby function graph methodology.

BACKGROUND OF THE INVENTION

Designing a video processing architecture requires the consideration ofa number of factors. Each functional block of the architecture designmust be clearly and precisely defined, as well as the flow of data andcontrol information between the functional blocks. The architecturedesign must then be mapped into real-life scenarios and applications.The resulting implementation of the architecture design for an actualapplication must then be evaluated to confirm that the desiredperformance goals and bandwidth requirements are satisfied.

Typically, a high-level hardware description language (HDL) is used fordefining circuit architectures at the component, board, and systemlevels. Circuit models can be developed at a very high level ofabstraction. One such language is known as register transfer level(RTL), which allows digital circuits to be described as a collection ofBoolean equations, registers, control logic (e.g., if-then-elsestatements), and complex event sequences. Commonly used RTL languagesinclude, for example, VHDL and Verilog.

Once the architecture design is described as an RTL implementation, thatRTL implementation is then synthesized into a gate-level netlist. Theresulting schematic of the gate level netlist can then be used as aguide for the overall block and function placement (floor planning),specific gate placement (pick-n-place), and layout of physicalinterconnections (routing). Once the implementation is achieved, it canbe verified using a C-model that is derived from the specification.

FIG. 1 illustrates the flow of conventional video processingarchitecture design process. As can be seen, the design process startswith the applicable specification or standard, such as the H.264standard, also known as the Advanced Video Coding (AVC) standard. Thisspecification is a high compression digital video codec standardproduced by the Joint Video Team (JVT), and is identical to ISO MPEG-4part 10, and is herein incorporated by reference in its entirety.

The next step in the design process is the hardware architecture design.A significant problem that hardware architecture designers face is thatthe H.264 specification is difficult to comprehend from a designerspoint of view and provides little structural guidelines. In this sense,there is a disconnect between the specification and hardwarearchitecture design portions of the design process. After the hardwarearchitecture design phase, the design process proceeds to RTLimplementation. A C-model based in the specification is used toperformance test the implementation and hardware architecture design.

Substantial time and resources are generally expended during theimplementation phase of the hardware architecture design. Once at theimplementation stage of the design process, only limited changes can bemade at the implementation level without penalty. In addition, anychanges necessary to the hardware architecture design after theimplementation process generally come with a heavy penalty. Inparticular, once the hardware architecture design is adjusted, theimplementation process must be repeated, at the cost of additional timeand resources. Thus, if the verification process fails, the designprocess must be started over and is repeated until a proposed hardwarearchitecture design is verified.

What is needed, therefore, are design techniques that allow videoprocessing hardware designers to effectively employ the requirements ofthe H.264 specification (or other appropriate video processing standard)during the hardware architecture design phase of the design process.Such techniques would eliminate or otherwise reduce costly multiplepasses through the implementation and verification portions of thedesign process.

SUMMARY OF THE INVENTION

One embodiment of the present invention provides a method for designingvideo processing architecture in accordance with a video processing aparticular specification (e.g., H.264 or other video processingstandard). The method includes generating a function graph thatgraphically represents criteria of the specification. The function graphhas input from an external source, and provides output to an externaltarget. The external source and target could be, for example, a RAM orother storage location. The function graph includes a plurality offunctional nodes each for performing a specific data processingfunction, one or more data elements input to and/or output from afunctional node, inter-node communication between the functional nodes,and control information provided by a functional node to control anotherfunctional node or inter-node-communication. The method continues withgenerating a hardware architecture design for a video processingapplication, and comparing that hardware architecture design to thefunction graph to determine if the design complies with the functiongraph. In response to determining the hardware architecture designcomplies with the functional graph, the method continues with providinga final architecture for register transfer level (RTL) implementation.In response to determining the hardware architecture design does notcomply with the functional graph, the method may further includeallowing adjustment to the hardware architecture design as necessary.

In one particular embodiment, generating a function graph thatgraphically represents criteria of the specification includes accessingone or more electronic libraries that store external sources/targets,functional nodes, data elements, inter-node communication, and controlinformation components reflected in the specification. In anotherparticular embodiment, comparing the hardware architecture design to thefunction graph is carried out using electronic logical comparisonsbetween one or more components of the function graph and a correspondingone or more components of the hardware architecture design.

The method may further include performing RTL implementation of thefinal architecture. In one such case, the method further includescomparing the RTL implementation to a C-model derived from thespecification to determine if the RTL implementation complies with theC-model. In response to determining the RTL implementation complies withthe C-model, the method may further include providing a final RTLimplementation that can be synthesized into a gate-level netlist. Inresponse to determining the RTL implementation does not comply with theC-model, the method may include allowing adjustment to the RTLimplementation as necessary.

Another embodiment of the present invention provides a system fordesigning video processing architecture in accordance with a videoprocessing a particular specification (e.g., H.264 or other videoprocessing standard). The system includes a function graph module forgenerating a function graph that graphically represents criteria of thespecification. The function graph has input from an external source, andprovides output to an external target. The function graph includes aplurality of functional nodes each for performing a specific dataprocessing function, one or more data elements input to and/or outputfrom a functional node, inter-node communication between the functionalnodes, and control information provided by a functional node to controlanother functional node or inter-node-communication. A hardwarearchitecture design module is configured for generating a hardwarearchitecture design for a video processing application, and anarchitecture verification module is configured for comparing thehardware architecture design to the function graph to determine if thedesign complies with the function graph, and if so, for providing afinal architecture for register transfer level (RTL) implementation.

In response to determining the hardware architecture design does notcomply with the functional graph, the architecture verification modulemay be further configured to allow adjustment to the hardwarearchitecture design as necessary. In one particular embodiment, thefunction graph module may be further configured to access one or moreelectronic libraries that store external sources/targets, functionalnodes, data elements, inter-node communication, and control informationcomponents reflected in the specification. In another particularembodiment, the architecture verification module is further configuredto carryout electronic logical comparisons between one or morecomponents of the function graph and a corresponding one or morecomponents of the hardware architecture design.

The system may include an RTL implementation module configured forperforming RTL implementation of the final architecture. The system mayinclude an implementation verification module configured for comparingthe RTL implementation to a C-model derived from the specification todetermine if the RTL implementation complies with the C-model. Inresponse to determining the RTL implementation complies with theC-model, the implementation verification module may be furtherconfigured to provide a final RTL implementation that can be synthesizedinto a gate-level netlist. In response to determining the RTLimplementation does not comply with the C-model, the implementationverification module may be further configured to allow adjustment to theRTL implementation as necessary.

The features and advantages described herein are not all-inclusive and,in particular, many additional features and advantages will be apparentto one of ordinary skill in the art in view of the figures anddescription. Moreover, it should be noted that the language used in thespecification has been principally selected for readability andinstructional purposes, and not to limit the scope of the inventivesubject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates the flow of a typical video processing architecturedesign process.

FIG. 2 illustrates the flow of a video processing architecture designprocess in accordance with one embodiment of the present invention.

FIG. 3 a illustrates an example function graph that can be used in avideo processing architecture design process, in accordance with oneembodiment of the present invention.

FIG. 3 b illustrates an example hardware architecture design that isnon-compliant with the function graph of FIG. 3 a.

FIG. 3 c illustrates an example hardware architecture design that iscompliant with the function graph of FIG. 3 a.

FIG. 4 illustrates a function graph configured in accordance with oneembodiment of the present invention.

FIG. 5 a is a block diagram of a system for carrying out a videoprocessing architecture design process in accordance with one embodimentof the present invention.

FIG. 5 b is a block diagram of the function graph module in the systemof FIG. 5 a, configured in accordance with one embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE INVENTION

A design technique is provided that allows video processing hardwaredesigners to effectively employ the requirements of the H.264specification (or other appropriate video processing standard) duringthe hardware architecture design phase of the design process. Thetechnique eliminates or otherwise reduces costly multiple passes throughthe implementation and verification portions of the design process, andallows designers to make changes to the hardware architecture design,thereby ensuring verification at the implementation phase.

Methodology and Design Flow

FIG. 2 illustrates the flow of a video processing architecture designprocess in accordance with one embodiment of the present invention. Thedesign process begins with a video design specification or standard. Ascan be seen, the specification is this example is the AVC standard,although other video processing standards can be used here as well.

A function graph is derived from the specification, and is essentially atool that bridges the disconnect between the specification and thehardware designer. In particular, a function graph includes fivecomponents: an external source/target, functional nodes, data elements,inter-node communication, and control information. Use of a functiongraph enables a designer to comply with the requirements of thespecification early in the hardware architecture design process. Thefunction graph and its five components will be discussed in greaterdetail with reference to FIGS. 3 a, 4, 5 a, and 5 b.

A hardware architecture design is developed for the particularapplication at hand, with reference to the function graph. Conventionalhardware architecture design techniques can be employed here. Note thatreference to the function graph can occur in a number of ways. Forexample, the designer can reference the function graph manually duringthe hardware architecture design phase. Alternatively, or in additionto, the function graph can be referenced automatically during a computerimplemented hardware architecture design phase.

The video processing architecture design process then proceeds withcomparing the proposed hardware architecture design with the functionalgraph to determine if the design is fully compliant. If not, then thedesigner is given the opportunity to adjust the architecture asnecessary. If the hardware architecture design complies with thefunctional graph, then a final architecture is provided so thatimplementation can be carried out.

With the architecture finalized, the implementation phase commences. Anynumber of conventional or custom RTL implementation techniques can beused here. The resulting implementation is then submitted to averification process using the C-model as normally performed. However,note that the use of the function graph in conjunction with the hardwarearchitecture design ensures the quality of the C-model for theverification process (as indicated by the dashed lines from the functiongraph and hardware architecture design to the C-model).

Adjustments can be made to the implementation as necessary, and theverification process repeated for each proposed implementation. Once theimplementation is verified against the C-model, a final implementationif provided. This RTL implementation can then be synthesized into agate-level netlist. The resulting schematic of the gate level netlistcan then be used as a guide for the overall block and function placement(floor planning), specific gate placement (pick-n-place), and layout ofphysical interconnections (routing).

As previously explained, use of the function graph in conjunction withthe hardware architecture design facilitates verification of the RTLimplementation against the C-model. FIGS. 3 a, 3 b, and 3 c demonstratethe relationship between the function graph and the hardwarearchitecture design.

In more detail, FIG. 3 a illustrates an example function graph that canbe used in a video processing architecture design process, in accordancewith one embodiment of the present invention. As can be seen, thefunction graph includes a number of functional nodes (A through H) andthe interconnections between those nodes. FIG. 3 b illustrates anexample hardware architecture design that is non-compliant with thefunction graph of FIG. 3 a. For example, the proposed hardwarearchitecture design is missing the interconnection between nodes G andD, as well as the interconnection between nodes D and E. Thesenon-compliant aspects of the design can be identified, for example,visually (by comparing the function graph to the design), orelectronically (using gate level logic representations of the comparedcomponents).

Without this comparison of the hardware architecture design to thefunction graph, the design would be presented for RTL implementation,and would fail verification because the missing interconnections. Thus,a design system configured in accordance with an embodiment of thepresent invention would allow the designer to adjust the hardwarearchitecture design. An example adjusted hardware architecture design isshown in FIG. 3 c, which illustrates a hardware architecture design thatis compliant with the function graph of FIG. 3 a. Note that functionscan be grouped (e.g., function A is grouped with function B in FIG. 3a), so long as the necessary interconnections are provided. Functiongraphs will now be discussed in more detail with reference to FIG. 4.

Functional Graph

FIG. 4 is an example of a functional graph in accordance with anembodiment of the present invention. A function graph is a way todescribe how a meaningful scenario is fulfilled, which in this exampleis a video processing system, and in particular, a video coder/decoder(CODEC). The function graph contains five important concepts: anexternal source and external target, functional nodes, data elements,inter-node communication, and control information.

The external source provides input to the CODEC, while the externaltarget provide receives output from the CODEC. Each can be, for example,some type of external storage that is not necessary to be defined in theCODEC.

Functional nodes are represented by the cycles in the graph (e.g., F.1,F.2, F.3), with each node performing a specific data processingfunction. Any number of known or otherwise necessary video processingroutines or functionality can be represented with functional nodes.Example functions include front-end blocks such as motion relatedfunctions (e.g., vector search functions, vector-based predictionfunctions, pre-coding decision functions, macro-block level de-interlacefunctions, and filter functions), and compression-loop blocks such ascompression functions (e.g., universal variable length decoder/encoderfor video stream element functions, CABAC encoder and decoder functions,reconstruction functions including de-quantization, IDCT, andde-compensation, and transform loop functions including de/compensation,I/DCT, de/quantization and post-quantization processing) and controlfunctions (e.g., pre-decode slice function, pre-decode macro-blockfunction, sequence control, pre-encode macro-block function, macro-blockencoding control function, and post-coding decision function). Eachfunctional node has at least one data input/output, and also receivesand/or provides control information.

A data element is content over the black arrows (e.g., D.0, D.1, D.2,D.3, D.4, D.5), and indicates a certain type of data that can be aninput or output of a functional node. In general, data elements consumethe largest portion of the bandwidth on the major buses. All types ofdata structures can be processed and transferred. Data elements travel,for example, between external RAM and front-end processing blocks,between external RAM and compression-loop blocks, from/to an internalcache, and/or through a processor data bus.

Inter-node-communication is depicted using arrows (e.g., #1, #2, #3, #4,#5), like a virtual data pipe, always from one functional node toanother to pass the data elements. Inter-node-communication could be acache, a buffer, a bus, or just a set of internal wires. Note that if acache/buffer is involved, the data elements on 2 ends may be different,depending on the particular CODEC architecture specification from whichthe function graph is derived. Inter-node-communication can be, forexample, between an external source and a motion engine, between anexternal source and other front-end processing blocks, between front-endprocessing blocks, between front-end compression loops, betweencompression-loop blocks, and between a compression-loop and an externalsource.

Control information is also depicted using arrows (C.1, C.2), and isprovided by a functional node and passed to control another node or adata pipe (inter-node-communication). A dashed arrow (e.g., C.2)indicates macro-block level control, while the dashed-dotted (e.g., C.1)arrow indicates picture/slice level control, which occurs relativelyless frequently. Note that other shared information not designated ascontrol information could be treated as global variables in a controlprocessor. Example control information includes macro-block controlinformation (e.g., motion related control and compression loop control)and upper level control information (e.g., sequence preparation andpicture processing information).

A number of example functional nodes, data elements,inter-node-communications, and control information are described in thepreviously incorporated U.S. Provisional Application No. 60/635,114, aswell as a number of example functional graphs. Note, however, that thespecific functional nodes, data elements, inter-node-communications,control information, and functional sub-graphs employed will dependfactors such as the underlying video processing specification and theperformance requirements of the targeted application. The presentinvention is not intended to be limited to any one such set ofcircumstances, but can readily be applied to any video processing designproject.

Variations will be apparent in light of this disclosure. For instance,note that a functional node may combine two different processes, such asa function module that performs both CABAC coding and decoding. Also, anoverall function graph can be made from a number of function sub-graphs.The degree of modularity can be varied to suit the designer'spreferences. Generally stated, the greater the degree of modularity infunctional nodes and graphs, the easier to compartmentalize functionalconcepts required by the specification.

Design System

FIG. 5 a is a block diagram of a system for carrying out a videoprocessing architecture design process in accordance with one embodimentof the present invention. This particular example design system includesa function graph module 505, a C-model 510, a hardware architecturedesign module 515, an architecture verification module 520, an RTLimplementation module 525, and an implementation verification module530. User input and interaction with the system is provided as needed,as will be apparent in light of this disclosure. A final implementationis provided that can then be synthesized into a gate-level netlist.

Other components and features not shown may also be included in thesystem, such as graphical user interfaces that facilitate userinteraction with the various components of the system, and back-endprocessing tools (e.g., floor planning, pick-n-place, and routingtools).

As previously discussed, the design process begins with a video designspecification or standard, which in this case is the AVC standard,although other video processing standards can be used here as well. Thefunction graph module 505 is configured to generate function graphs thatare derived from or otherwise based in the specification. The resultingfunction graphs describe a set external source/targets, functionalnodes, data elements, inter-node communication, and control informationthat graphically represent the specification criteria.

The function graph module 505 can be implemented, for example, as agraphical drawing package that allows the designer to create and modifyfunction graphs that can be printed or otherwise viewed for the purposeof carrying out a manual verification process. Alternatively, thefunction graph module 505 can be implemented with custom built logicand/or software, where each of the function graph components arerepresented by a routine (e.g., functional nodes), data structures orvariables (e.g., data elements), logic (e.g., inter-node communicationand control information), or other mathematical models. The functiongraph module 505 is discussed in greater detail with reference to FIG. 5b.

The C-model 510 can be implemented with conventional technology, and isderived from the specification as normally done. However, and aspreviously explained, use of the functional graph in conjunction withthe hardware architecture design phase ensures the quality of theC-model 510 for verification purposes (as indicated by the dashed linesfrom the function graph module 505 and the hardware architecture designmodule 515 to the C-model 510).

The hardware architecture design module 515 can be implemented withconventional technology, and is configured to develop a hardwarearchitecture design for the particular application at hand, withreference to the function graph(s) provided by module 505. Recall thatreference to a function graph can occur in a number of ways. Forexample, the designer can reference the function graph manually duringthe hardware architecture design phase, where printed or on-screenversions of the relevant function graphs are available for review by thedesigner. Components of the proposed hardware architecture design cantherefore be visually compared to the function graphs for compliance.

Alternatively, or in addition to, the function graph can be referencedautomatically during a computer implemented hardware architecture designphase. In one such embodiment, the components of the function graph(external source/targets, functional nodes, data elements, inter-nodecommunication, and control information) are represented in programmablelogic and/or software that is integrated or otherwise interfaced with aconventional hardware architecture design tool. Here, components of theproposed hardware architecture design are logically and/ormathematically compared to the function graphs for compliance.

In any such manual or automatic cases, as design choices are made, thefunction graph can be consulted and compared with the proposed designfor verification purposes. Such crosschecking during the hardwarearchitecture design facilitates a final implementation that is compliantwith all specification criteria. In the embodiment shown, thecrosschecking is carried out by the architecture verification module520. For manual verification, the architecture verification module 520can be configured with a split screen monitor that allows the designerto view both the proposed hardware architecture design and the functiongraph. Segmented viewing can be used for larger designs, is so desired.

For automatic verification, the architecture verification module 520 canbe configured with a number of logical cross-checking routines. In oneparticular comparison scenario, each component of the function graph isgrouped and tallied. For instance, the function graph example shown inFIG. 4 has two external source/targets (e.g., RAMs), three functionalnodes (F.1, F.2, and F.3), five data elements (e.g., D.0, D.1, D.2, D.3,D.4, D.5), five inter-node communications (#1, #2, #3, #4, #5), and twocontrol information (C.1, C.2). Thus, a total of seventeen components.The proposed hardware architecture design should have a total ofseventeen such components as well, which can be confirmed by correlatingthe number various design components used by the hardware architecturedesign module 515 to the number of corresponding components used by thefunction graph module 505. For a more detailed verification, the logicalrepresentations of the design components used by the hardwarearchitecture design module 515 can be correlated and compared to thelogical representations of the components used by the function graphmodule 505. This detailed component-level comparison can be performed inaddition to the general component tally-based comparison, or in lieu ofthe tally-based comparison. Numerous conventional modeling andcomparison techniques can be employed here, and the present invention isnot intended to be limited to any one such embodiment.

Regardless of how the comparison is performed, if the design is notfully compliant, then the designer is given the opportunity to adjustthe architecture as necessary. If the hardware architecture designcomplies with the functional graph, then a final architecture isprovided so that RTL implementation can be carried out by the RTLimplementation module 525, which can be implemented with conventionalRTL implementation techniques. The implementation verification module530 can also be implemented with conventional technology, and isconfigured to verify the proposed RTL implementation against the C-model510. The designer is given opportunity to adjust the implementation asnecessary, until a final implementation is achieved that can be providedto front-end processing tools. The verified implementation can then berealized in semi-conductor material (e.g., silicon).

FIG. 5 b is a block diagram of a function graph module 505, configuredin accordance with one embodiment of the present invention. In thisparticular embodiment, the function graph module 505 includes a userinterface 505, an external source/target library 505 b, a controlinformation library 505 c, a functional node library 505 d, a dataelement library 505 e, an inter-node-communication library 505 f, and afunction graph assembly sub-module 505 g.

The user interface 505 a can be implemented as a graphical userinterface, and enables the user to interact with the module 505.Specification criteria is input via the user interface 505 a, and can bestored in a RAM or other memory available to the module, if so desired.As previously explained, a function graph includes five components isderived from the specification criteria. The user interface 505 a allowsthe user to build each of the external sources/targets, functionalnodes, data elements, inter-node communication, and control informationcomponents reflected in the specification criteria, and to send each ofthe components to their respective electronic libraries over the businterconnecting the libraries and the user interface 505 a. Thus, allpossible variations of the function graphs embraced by the specificationcriteria are represented in the libraries.

Example external sources/targets in the external source/target library505 b include various external RAMs and other data and control sourcesthat provide information to the CODEC being modeled. Example controlinformation stored in the control information library 505 c includesmacro-block control information (e.g., motion related control andcompression loop control) and upper level control information (e.g.,sequence preparation and picture processing information). Note thatmacro-block level control can be distinguished from the less frequentpicture/slice level control within the library 505 c. The library 505 cmay also include other shared information not designated as macro-blocklevel control or picture/slice level control information, but that couldbe treated as global variables in the control processor of the functiongraph assembly module 505 g.

Example functional nodes stored in the functional node library 505 dinclude front-end blocks such as motion related functions (e.g., vectorsearch functions, vector-based prediction functions, pre-coding decisionfunctions, macro-block level de-interlace functions, and filterfunctions), and compression-loop blocks such as compression functions(e.g., universal variable length decoder/encoder for video streamelement functions, CABAC encoder and decoder functions, reconstructionfunctions including de-quantization, FDCT, and de-compensation, andtransform loop functions including de/compensation, IDCT,de/quantization and post-quantization processing) and control functions(e.g., pre-decode slice function, pre-decode macro-block function,sequence control, pre-encode macro-block function, macro-block encodingcontrol function, and post-coding decision function). Each functionalnode has at least one data input/output, and also receives and/orprovides control information.

Data elements stored in the data element library 505 e include all typesof data structures that can be processed and transferred. Exampleinter-node-communication stored in the inter-node-communication library505 f includes inter-node-communication between an external source and amotion engine, between an external source and other front-end processingblocks, between front-end processing blocks, between front-endcompression loops, between compression-loop blocks, and between acompression-loop and an external source. Note that the electroniclibrary can designate each of the communications with a unique ID, andspecify the data producer (e.g., functional node or external source),the data consumer (e.g., functional node), and the in/out data elementsassociated with each data pipe. Further note that the in/out dataelements for a particular inter-node-communication need not be the same.

In one particular embodiment, the inter-node-communication is fortransferring data elements only (e.g., assisted by a semaphore mechanismin hardware), and not for transferring control information. In such anembodiment, control information is generally connected to processor orinternal controllers through control busses, which are usually notnecessary to be controlled by other special mechanisms, such as alogical semaphore mechanism.

A number of example functional nodes, data elements,inter-node-communications, and control information that can be stored inthe corresponding libraries are described in the previously incorporatedU.S. Provisional Application No. 60/635,114, as well as a number ofexample functional graphs that can be created from those libraries.

The function graph assembly module 505 g is configured to build thefunction graph based on user input from the user interface 505 a, andincludes a functional node processor, an inter-node-communicationprocessor, a control processor, a data processor, and an externalsource/target processor. Each of these dedicated processors operates inconjunction with the other processors to assemble the selectedcomponents of the function graph, which is then output of the functiongraph module 505 for subsequent use by the comparison module 520.

Note that although individual components are shown here for the purposeof illustration, other embodiments may have one or more of thecomponents integrated with other components included in the system. Forinstance, the processors of the function graph assembly module can eachbe implemented as a set of instructions executing on a digital signalprocessor (DSP) or other suitable processing environment (e.g., FPGA orASIC). Likewise, the electronic libraries can be integrated into onelarge library that is indexed according to component type, wherein eachcomponent sub-section of the overall library is sub-indexed as necessaryto distinguish each entry for selection purposes during the functiongraph building process.

Also, note that the function graph module 505 can also be implemented,for example, with an off-the-shelf drawing package that allows a user tocreate printed or otherwise viewable function graphs configured inaccordance with an embodiment of the present invention, that can be usedby a designer to then create and verify a particular hardwarearchitecture design.

The foregoing description of the embodiments of the invention has beenpresented for the purposes of illustration and description. It is notintended to be exhaustive or to limit the invention to the precise formdisclosed. Many modifications and variations are possible in light ofthis disclosure. It is intended that the scope of the invention belimited not by this detailed description, but rather by the claimsappended hereto.

1-20. (canceled)
 21. A method for designing video processingarchitecture in accordance with a video processing a particularspecification, comprising: generating a function graph that graphicallyrepresents criteria of the specification, the function graph havinginput from an external source and providing output to an externaltarget, and including a plurality of functional nodes each forperforming a specific data processing function, one or more dataelements input to and/or output from a functional node, inter-nodecommunication between the functional nodes, and control informationprovided by a functional node to control another functional node orinter-node-communication; generating a hardware architecture design fora video processing application; comparing the hardware architecturedesign to the function graph to determine if the design complies withthe function graph; and in response to determining the hardwarearchitecture design complies with the functional graph, providing afinal architecture for register transfer level (RTL) implementation,wherein the specification is the AVC standard.
 22. A method fordesigning video processing architecture in accordance with a videoprocessing a particular specification, comprising: generating a functiongraph that graphically represents criteria of the specification, thefunction graph having input from an external source and providing outputto an external target, and including a plurality of functional nodeseach for performing a specific data processing function, one or moredata elements input to and/or output from a functional node, inter-nodecommunication between the functional nodes, and control informationprovided by a functional node to control another functional node orinter-node-communication; generating a hardware architecture design fora video processing application; comparing the hardware architecturedesign to the function graph to determine if the design complies withthe function graph; and in response to determining the hardwarearchitecture design complies with the functional graph, providing afinal architecture for register transfer level (RTL) implementation,wherein said functions include at least one of front-end blocks,compression-loop blocks, and control functions.
 23. The method of claim22 wherein said front-end blocks include motion related functions,including at least one of: vector search functions, vector-basedprediction functions, pre-coding decision functions, macroblock levelde-interlace functions, and filter functions.
 24. The method of claim 22wherein said compression-loop blocks include compression functions,including at least one of: universal variable length decode/encode forvideo stream element functions, CABAC encoder and decoder functions,reconstruction functions (including de-quantization, IDCT, andde-compensation), and transform loop functions (includingde/compensation, I/DCT, de/quantization and post-quantizationprocessing).
 25. The method of claim 22 wherein said control functionsinclude at least one of: pre-decode slide functions, pre-decodemacro-block functions, sequence controls, pre-encode macro-blockfunctions, macro-block encoding control functions, and post-codingdecision functions.
 26. A method for designing video processingarchitecture in accordance with a video processing a particularspecification, comprising: generating a function graph that graphicallyrepresents criteria of the specification, the function graph havinginput from an external source and providing output to an externaltarget, and including a plurality of functional nodes each forperforming a specific data processing function, one or more dataelements input to and/or output from a functional node, inter-nodecommunication between the functional nodes, and control informationprovided by a functional node to control another functional node orinter-node-communication; generating a hardware architecture design fora video processing application; comparing the hardware architecturedesign to the function graph to determine if the design complies withthe function graph; and in response to determining the hardwarearchitecture design complies with the functional graph, providing afinal architecture for register transfer level (RTL) implementation,wherein said control information includes at least one of macro-blockcontrol information, and upper level control information.
 27. The methodof claim 26 wherein said macro-block control information includes atleast one of motion related control and compression loop control. 28.The method of claim 26 wherein said upper level control informationincludes at least one of sequence preparation information and pictureprocessing information.
 29. A method for designing video processingarchitecture in accordance with a video processing a particularspecification, comprising: generating a function graph that graphicallyrepresents criteria of the specification, the function graph havinginput from an external source and providing output to an externaltarget, and including a plurality of functional nodes each forperforming a specific data processing function, one or more dataelements input to and/or output from a functional node, inter-nodecommunication between the functional nodes, and control informationprovided by a functional node to control another functional node orinter-node-communication; generating a hardware architecture design fora video processing application; comparing the hardware architecturedesign to the function graph to determine if the design complies withthe function graph; and in response to determining the hardwarearchitecture design complies with the functional graph, providing afinal architecture for register transfer level (RTL) implementation,wherein generating a function graph that graphically represents criteriaof the specification includes accessing one or more electronic librariesthat store external sources/targets, functional nodes, data elements,inter-node communication, and control information components reflectedin the specification, and wherein said functional nodes stored in thefunctional node library include at least one of: front-end blocks,compression-loop blocks, and control functions.
 30. The method of claim29 wherein said front-end blocks include motion related functions,including at least one of: vector search functions, vector-basedprediction functions, pre-coding decision functions, macro-block levelde-interlace functions, and filter functions.
 31. The method of claim 29wherein said compression-loop blocks include compression functions,including at least one of: universal variable length decode/encode forvideo stream element functions, CABAC encoder and decoder functions,reconstruction functions including de-quantization, IDCT, andde-compensation, and transform loop functions including de/compensation,I/DCT, de/quantization and post-quantization processing.
 32. The methodof claim 29 wherein said control functions include at least one of:pre-decode slice functions, pre-decode macro-block functions, sequencecontrols, pre-encode macro-block functions, macro-block encoding controlfunctions, and post-coding decision functions.
 33. A method fordesigning video processing architecture in accordance with a videoprocessing a particular specification, comprising: generating a functiongraph that graphically represents criteria of the specification, thefunction graph having input from an external source and providing outputto an external target, and including a plurality of functional nodeseach for performing a specific data processing function, one or moredata elements input to and/or output from a functional node, inter-nodecommunication between the functional nodes, and control informationprovided by a functional node to control another functional node orinter-node-communication; generating a hardware architecture design fora video processing application; comparing the hardware architecturedesign to the function graph to determine if the design complies withthe function graph; and in response to determining the hardwarearchitecture design complies with the functional graph, providing afinal architecture for register transfer level (RTL) implementation,wherein generating a function graph that graphically represents criteriaof the specification includes accessing one or more electronic librariesthat store external sources/targets, functional nodes, data elements,inter-node communication, and control information components reflectedin the specification, and wherein inter-node communication stored in theinter-node-communication library includes inter-node communicationbetween at least one of: (a) an external source and a motion engine, (b)an external source and other front-end processing blocks, (c) front-endprocessing blocks, (d) front-end compression loops, (d) compression-loopblocks, and (e) a compression-loop and an external source.
 34. A systemfor designing video processing architecture in accordance with a videoprocessing a particular specification, comprising: a function graphmodule for generating a function graph that graphically representscriteria of the specification, the function graph having input from anexternal source and providing output to an external target, andincluding a plurality of functional nodes each for performing a specificdata processing function, one or more data elements input to and/oroutput from a functional node, inter-node communication between thefunctional nodes, and control information provided by a functional nodeto control another functional node or internode-communication; ahardware architecture design module for generating a hardwarearchitecture design for a video processing application; and anarchitecture verification module for comparing the hardware architecturedesign to the function graph to determine if the design complies withthe function graph, and if so, for providing a final architecture forregister transfer level (RTL) implementation wherein the specificationis the AVC standard.
 35. A system for designing video processingarchitecture in accordance with a video processing a particularspecification, comprising: a function graph module for generating afunction graph that graphically represents criteria of thespecification, the function graph having input from an external sourceand providing output to an external target, and including a plurality offunctional nodes each for performing a specific data processingfunction, one or more data elements input to and/or output from afunctional node, inter-node communication between the functional nodes,and control information provided by a functional node to control anotherfunctional node or internode-communication; a hardware architecturedesign module for generating a hardware architecture design for a videoprocessing application; and an architecture verification module forcomparing the hardware architecture design to the function graph todetermine if the design complies with the function graph, and if so, forproviding a final architecture for register transfer level (RTL)implementation, wherein said functions include at least one of front-endblocks, compression-loop blocks, and control functions.
 36. The systemof claim 35 wherein said front-end blocks include motion relatedfunctions, including at least one of: vector search functions,vector-based prediction functions, pre-coding decision functions,macroblock level de-interlace functions, and filter functions.
 37. Thesystem of claim 35 wherein said compression-loop blocks includecompression functions, including at least one of: universal variablelength decode/encode for video stream element functions, CABAC encoderand decoder functions, reconstruction functions (includingde-quantization, IDCT, and de-compensation), and transform loopfunctions (including de/compensation, I/DCT, de/quantization andpost-quantization processing).
 38. The system of claim 35 wherein saidcontrol functions include at least one of: pre-decode slide functions,pre-decode macro-block functions, sequence controls, pre-encodemacro-block functions, macro-block encoding control functions, andpost-coding decision functions.
 39. A system for designing videoprocessing architecture in accordance with a video processing aparticular specification, comprising: a function graph module forgenerating a function graph that graphically represents criteria of thespecification, the function graph having input from an external sourceand providing output to an external target, and including a plurality offunctional nodes each for performing a specific data processingfunction, one or more data elements input to and/or output from afunctional node, inter-node communication between the functional nodes,and control information provided by a functional node to control anotherfunctional node or internode-communication; a hardware architecturedesign module for generating a hardware architecture design for a videoprocessing application; and an architecture verification module forcomparing the hardware architecture design to the function graph todetermine if the design complies with the function graph, and if so, forproviding a final architecture for register transfer level (RTL)implementation, wherein said control information includes at least oneof macro-block control information, and upper level control information.40. The system of claim 39 wherein said macro-block control informationincludes at least one of motion related control and compression loopcontrol.
 41. The system of claim 39 wherein said upper level controlinformation includes at least one of sequence preparation informationand picture processing information.
 42. A system for designing videoprocessing architecture in accordance with a video processing aparticular specification, comprising: a function graph module forgenerating a function graph that graphically represents criteria of thespecification, the function graph having input from an external sourceand providing output to an external target, and including a plurality offunctional nodes each for performing a specific data processingfunction, one or more data elements input to and/or output from afunctional node, inter-node communication between the functional nodes,and control information provided by a functional node to control anotherfunctional node or internode-communication; a hardware architecturedesign module for generating a hardware architecture design for a videoprocessing application; and an architecture verification module forcomparing the hardware architecture design to the function graph todetermine if the design complies with the function graph, and if so, forproviding a final architecture for register transfer level (RTL)implementation, wherein the function graph module is further configuredto access one or more electronic libraries that store externalsources/targets, functional nodes, data elements, inter-nodecommunication, and control information components reflected in thespecification, and wherein said functional nodes stored in thefunctional node library include at least one of: front-end blocks,compression-loop blocks, and control functions.
 43. The system of claim42 wherein said front-end blocks include motion related functions,including at least one of: vector search functions, vector-basedprediction functions, pre-coding decision functions, macro-block levelde-interlace functions, and filter functions.
 44. The system of claim 42wherein said compression-loop blocks include compression functions,including at least one of: universal variable length decode/encode forvideo stream element functions, CABAC encoder and decoder functions,reconstruction functions including de-quantization, IDCT, andde-compensation, and transform loop functions including de/compensation,I/DCT, de/quantization and post-quantization processing.
 45. The systemof claim 42 wherein said control functions include at least one of:pre-decode slice functions, pre-decode macro-block functions, sequencecontrols, pre-encode macro-block functions, macro-block encoding controlfunctions, and post-coding decision functions.
 46. A system fordesigning video processing architecture in accordance with a videoprocessing a particular specification, comprising: a function graphmodule for generating a function graph that graphically representscriteria of the specification, the function graph having input from anexternal source and providing output to an external target, andincluding a plurality of functional nodes each for performing a specificdata processing function, one or more data elements input to and/oroutput from a functional node, inter-node communication between thefunctional nodes, and control information provided by a functional nodeto control another functional node or internode-communication; ahardware architecture design module for generating a hardwarearchitecture design for a video processing application; and anarchitecture verification module for comparing the hardware architecturedesign to the function graph to determine if the design complies withthe function graph, and if so, for providing a final architecture forregister transfer level (RTL) implementation, wherein the function graphmodule is further configured to access one or more electronic librariesthat store external sources/targets, functional nodes, data elements,inter-node communication, and control information components reflectedin the specification, and wherein inter-node communication stored in theinter-node-communication library includes inter-node communicationbetween at least one of: (a) an external source and a motion engine, (b)an external source and other front-end processing blocks, (c) front-endprocessing blocks, (d) front-end compression loops, (d) compression-loopblocks, and (e) a compression-loop and an external source.